<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>02-this指针</title>
</head>
<body>
    <script>
        // console.log(this); // 全局没有上下文的时候，this 指向了 window --- this === window
        
        /*
            变量 a 是全局变量，我们通过打印 this 也可以发现在全局范围内出现的变量 a
            那么此时， this.a 的指向就是全局范围内的 a
        */
        // var a = 12;
        // console.log(this.a); 
        // console.log(this);

        function fn(){
            a = 12;  // 函数 fn 内的变量 a 如果不使用 var 关键字声明，在 js 文件执行时，会进行变量提升
            console.log(this.a); // 此时的 this.a 指向的是全局范围内的 a 变量
            console.log(this); // 即使将 this 放在函数 fn 里面进行打印，它依然指向了 window
        }
        window.fn() // 此时的 fn 函数外层没有对象的包裹，只有一个顶层对象 window，此时调用 fn 函数，相当于 window.fn()

        // var obj = {
        //     say:function(){
        //         console.log('1111');
        //     }
        // }

        // obj.say()

        /*
            this 指向：
            1. 如果没有上下文的时候，this 默认指向 window 对象
            2. 如果存在上下文，哪个对象调用函数，this 就指向那个调用函数的对象
        */ 
    </script>
</body>
</html>